from time import sleep

from selenium.webdriver import Keys
from selenium.webdriver.common.by import By

from page import c_path
from base.base import Base

url = "http://192.168.8.222/admin.php"


class AdminPage(Base):
    def __init__(self):
        super().__init__(url)

    # def login(self):
    #     sleep(20)
    #     self.save_cookie("../data/c_admin.json")
    # 权限列表
    def going_iframe(self):  # 跳过登录方法
        self.set_cookie("../data/c_admin_cookies.json")
        self.driver.get(url)  # 跳过登录
        self.click(c_path.cotrol_click)  # 点击大菜单
        self.click(c_path.management_list)  # 点击管理员列表菜单
        self.go_iframe(c_path.iframe_url)  # 进入iframe

    def add_admin(self, user, pwd, num):  # 添加管理员
        self.going_iframe()
        self.click(c_path.add_admin)  # 点击新增按钮
        self.input(c_path.input_user, user)  # 输入用户名
        self.input(c_path.input_pwd, pwd)  # 输入密码
        self.input(c_path.input_num, num)  # 输入手机号码
        self.click(c_path.click_sex_girl)  # 点击性别选择
        self.click(c_path.click_power)  # 点击权限组下拉框
        self.click(c_path.select_power)  # 选择权限
        self.click(c_path.click_bc)  # 点击保存

    def update_admin(self, pwd1, num1):  # 修改管理员信息
        self.going_iframe()
        self.click(c_path.update_admin)
        self.input(c_path.update_pwd, pwd1)
        self.input(c_path.update_num, num1)
        self.click(c_path.update_sex)
        self.click(c_path.update_click_status)
        self.click(c_path.update_status)
        self.click(c_path.update_click)

    def search_admin(self, a):  # 查找管理员
        self.going_iframe()
        self.input(c_path.search_admin_input, a)
        self.click(c_path.search_admin)

    def delete_admin(self):  # 删除管理员
        self.going_iframe()
        self.click(c_path.delete_admin)  # 点击删除按钮
        self.click(c_path.delete_queren)  # 点击确认删除

    # 角色管理
    def going_iframe_user(self):
        self.set_cookie("../data/c_admin_cookies.json")
        self.driver.get(url)  # 跳过登录
        self.click(c_path.cotrol_click)  # 点击大菜单
        self.click(c_path.role_management)  # 点击角色管理菜单
        self.go_iframe(c_path.iframe_url)  # 进入iframe

    def add_user(self, add):  # 添加用户并赋权方法
        self.going_iframe_user()
        self.click(c_path.add_user)  # 点击新增按钮
        self.input(c_path.add_user_name, add)  # 输入用户名
        self.click(c_path.node1)  # 点击权限按钮
        self.click(c_path.node2)  # 点击权限按钮
        self.click(c_path.node3)  # 点击权限按钮
        self.click(c_path.node4)  # 点击权限按钮
        self.click(c_path.node5)  # 点击是否启用按钮
        self.click(c_path.node_button)  # 点击保存

    def update_user(self, update):  # 修改用户名及其权限方法
        self.going_iframe_user()
        self.click(c_path.update_user)  # 点击编辑按钮
        self.input(c_path.update_username, update)  # 编辑用户名
        self.click(c_path.update_user_node1)  # 点击权限按钮
        self.click(c_path.update_user_node2)  # 点击权限按钮
        self.click(c_path.update_user_node3)  # 点击权限按钮
        self.click(c_path.update_user_node4)  # 点击启用按钮
        sleep(2)
        self.click(c_path.update_node_button)  # 点击保存
        sleep(1)

    def search_user(self, search):  # 搜索用户和删除用户方法
        self.going_iframe_user()
        self.input(c_path.search_user_input, search)  # 输入要搜索的用户名
        self.click(c_path.search_user)  # 点击搜索按钮
        self.click(c_path.user_details)
        self.click((By.XPATH, '//div[starts-with(@id, "am-modal-")]/div/span'))
        sleep(2)
        self.click(c_path.delete_user)  # 点击删除按钮
        self.click(c_path.delete_user_qr)  # 点击确定删除按钮
        self.click(c_path.reset_user)  # 点击重置按钮
        self.click(c_path.update_user_select)
        sleep(1)
        self.click(c_path.update_user_select1)

    # 权限分配
    def going_iframe_power(self):
        self.set_cookie("../data/c_admin_cookies.json")
        self.driver.get(url)  # 跳过登录
        self.click(c_path.cotrol_click)  # 点击大菜单
        self.click(c_path.power_list)  # 点击权限分配菜单
        self.go_iframe(c_path.iframe_url)  # 进入iframe

    def add_power(self, a, b, c, d, e):  # 新增权限方法
        self.going_iframe_power()
        self.click(c_path.add_power)  # 点击新增按钮
        self.click(c_path.column_level)  # 点击权限目录
        self.input(c_path.column_level_select, a)  # 输入权限级别
        self.find_element(c_path.column_level_select).send_keys(Keys.ENTER)  # 按下键盘enter键
        self.input(c_path.power_name_input, b)  # 输入权限名称
        self.input(c_path.column_name_input, c)  # 输入控制器名称
        self.input(c_path.def_name_input, d)  # 输入方法名称
        self.input(c_path.power_num, e)
        self.click(c_path.power_add_btn)  # 点击保存按钮

    def update_power(self, f):  # 修改权限方法
        self.going_iframe_power()
        self.click(c_path.update_power)  # 点击加号按钮
        self.hover(c_path.update_power_hover1)  # 悬停
        self.click(c_path.update_power_1)  # 点击修改按钮
        self.input(c_path.update_power_2, f)  # 修改顺序
        self.scroll(c_path.power_add_btn)  # 滚动
        self.click(c_path.update_power_3)  # 点击不显示按钮
        self.click(c_path.power_add_btn)  # 点击保存按钮

    def delete_power(self):  # 删除权限
        self.going_iframe_power()
        self.click(c_path.delete_power_btn)  # 点击加号按钮
        self.hover(c_path.delete_power_hover)  # 悬停
        self.click(c_path.power_delete_btn)  # 删除按钮
        self.click(c_path.power_btn)  # 确定删除按钮
